#ifndef SILNIKGRAFICZNY_H_
#define SILNIKGRAFICZNY_H_

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include "SDL/SDL_mixer.h"
#include "Labirynt.h"

#include <string>
#include <unistd.h>

class SilnikGraficzny {
	//czcionka używana w programie
	TTF_Font *font;
	// powierzchnia przechowująca aktualny stan ekranu:
	SDL_Surface * screen;
	// powierzchnie przechowujące używane obrazy:
	SDL_Surface * obrazLabiryntu[3];
	SDL_Surface * gracz1[4]; // obrazy podczas ruchu: góra, dół, lewo, prawo
	SDL_Surface * gracz2[4]; // j.w.
	Mix_Music * muzyka;
	Mix_Music * dzwiekWygrana;
	Mix_Music * dzwiekPrzegrana;
	bool init();	// inicjalizacja - wywoływane przez konstruktor
	SDL_Surface * wczytajObraz(std::string filename);
	bool pobierzDane();
public:
	std::string komunikat;
	static const int SCREEN_WIDTH = 1366;
	static const int SCREEN_HEIGHT = 768;
	static const int SCREEN_BPP = 32;
	SilnikGraficzny();
	~SilnikGraficzny();
	void nalozObraz(int x,int y, SDL_Surface* source, SDL_Surface* destination);
	void rysujLabirynt(Labirynt * labirynt);
	bool obsluzKlawiature(Labirynt * labirynt);
	void wyswietlNapis(int x, int y, std::string tresc);
	void wyswietlKoniec(bool czyWygrana,Labirynt * labirynt);
	void wyswietlOdliczanie(Labirynt * labirynt);
};

#endif
